It is standard practice in enterprise information technology (“IT”) environments to backup regularly all of the data that is important for supporting business operations. For example, databases must be backed up regularly because their contents change on a daily basis, as do the contents of email servers and the like. The purpose of making backups of such storage repositories is to provide a fall-back copy of critical data in the event data is lost in the production environment.
One of the problems that present themselves in the context of making data backups is ensuring the availability of appropriate target storage devices for receiving the data generated when a backup job runs. A human administrator typically schedules each backup job by specifying the source data to be backed up, a start time when the backup should be taken and a target device to which the backup data should be written. But the duration of backup jobs can vary quite dynamically in practice. The size of a backup, even for the same data source, can change over time because the data in the source repository can grow or shrink as, for example, the tables in a database are populated and purged. And the rate of progress for a backup job can vary over time as, for example, bandwidth demands over the relevant network increase or decrease.
Consequently, it has become quite difficult for human administrators to predict when a given target storage device will be free, in large part because it has become difficult to know when a backup job utilizing a given target device will be completed.